﻿using SIR.Common;
using System;

namespace SIR.Entities.Interfaces
{
	/// <summary>
	/// Represents an image within the system
	/// </summary>
	public interface IImage : IEntity
	{
		/// <summary>
		/// Gets or sets the name of the image
		/// </summary>
		string Name { get; set; }
		/// <summary>
		/// Gets the image data for the image
		/// </summary>
		IImageData Data { get; }
		/// <summary>
		/// Gets the thumb for the image
		/// </summary>
		IImageThumb Thumb { get; }
		/// <summary>
		/// Gets or sets the file type for the image
		/// </summary>
		string FileType { get; set; }
		/// <summary>
		/// Gets the size for the image
		/// </summary>
		long Size { get; set; }
		/// <summary>
		/// Gets the image analysis data for the image
		/// </summary>
		IImageAnalysis Analysis { get; }
		/// <summary>
		/// Gets the folder identifier for the image
		/// </summary>
		long FolderId { get; }
		/// <summary>
		/// Gets whether or not the image is private
		/// </summary>
		bool IsPrivate { get; }
		/// <summary>
		/// Gets whether or not the containing folder is private
		/// </summary>
		bool IsFolderPrivate { get; }
		/// <summary>
		/// Gets the user identifier for the image
		/// </summary>
		long UserId { get; }
		/// <summary>
		/// Gets the data and time that the image was uploaded
		/// </summary>
		DateTime Uploaded { get; }
		/// <summary>
		/// Gets the processing status for the image
		/// </summary>
		ProcessingStatus Status { get; }
	}
}

